package cn.fulong.sso.client.manager;

/**
 * @desc: 会话管理器接口，定义会话行为
 * @author: 云树
 * @createDate: 2019/1/17 10:06
 * @version: 1.0
 */
public interface SessionManager<T> {

    /**
     * @param token
     * @param sessionStorage 本地存储
     * @return
     * @desc 添加 token 与 sessionStorage之间相互映射关系
     */
    boolean bindSessionManager(String token, T sessionStorage);

    /**
     * 清除本地SessionManager 根据 Token
     *
     * @param token
     * @return
     */
    boolean removeSessionManagerByToken(String token);


    /**
     * 清除本地SessionManager根据ssessionStorage
     *
     * @param sessionStorage
     * @return
     */
    boolean removeSessionManagerBySession(T sessionStorage);


    /**
     * @param token
     * @param sessionStorage
     * @return
     * @desc 添加 token 与 session之间相互映射关系
     */
    boolean addTokenSessionStorage(String token, T sessionStorage);


    /**
     * @param token
     * @return 根据token清除 token Session映射
     */
    boolean removeTokenMappingSessionByToken(String token);


}
